package global.security;

import global.beanUtils.BeanUtils;

import java.util.Map;

import util.DateUtils;
import domain.User;

/**
 * 客户端Session工具类.
 * <p>
 * 创建日期：2010-07-01<br>
 * 创建人：Xiyt<br>
 * 修改日期：<br>
 * 修改人：<br>
 * 修改内容：<br>
 * 
 * @author Xiyt
 * @version 1.0
 */
public class SessionUtils {
	// 判断session是否有效
	private static boolean isAvailable() {
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession != null;
	}
	
	/**
	 * 取得当前用户ID
	 * @return
	 */
	public static String getCurrentUserId() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getUserId();
	}
	
	/**
	 * 取得当前用户姓名
	 * @return
	 */
	public static String getCurrentUserName() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getUserName();
	}
	
	/**
	 * 取得当前用户配置信息
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Map getUserMeta() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getUserMeta();
	}
	
	/**
	 * 取得当前用户权限
	 * @return
	 */
	public static String getUserRole() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getRole();
	}
	
	/**
	 * 取得当前用户性别
	 * @return
	 */
	public static String getUserSex() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getSex();
	}
	
	/**
	 * 取得当前用户生日
	 * @return
	 */
	public static String getUserBirthday() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		if(null != clientSession.getBirthday()){
			return DateUtils.formatDate2Str(DateUtils.DATE_PATTON_1);
		}else{
			return "";
		}
	}
	
	/**
	 * 取得当前用户邮箱
	 * @return
	 */
	public static String getUserEmail() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getEmail();
	}
	
	/**
	 * 取得当前用户电话
	 * @return
	 */
	public static String getUserPhone() {
		if (!isAvailable()) {
			return null;
		}
		ClientSession clientSession = AuthenticatorHolder.getClientSession();
		return clientSession.getPhone();
	}
	
	/**
	 * 根据user设置客户端session
	 * @return
	 * @throws Exception
	 */
	public static ClientSession getClientSession(User user) throws Exception{
		// 客户端Session类
		ClientSession cs = null;
		if(null!=user){
			cs = new ClientSession();
			BeanUtils.setProperty(cs, "userId", user.getUserId());// 用户ID
			BeanUtils.setProperty(cs, "userName", user.getUserName());// 用户名
			BeanUtils.setProperty(cs, "role", user.getRole());// 权限
			BeanUtils.setProperty(cs, "sex", user.getSex());// 性别
			BeanUtils.setProperty(cs, "birthdayStr", user.getBirthdayStr());// 生日
			BeanUtils.setProperty(cs, "email", user.getEmail());// 邮箱
			BeanUtils.setProperty(cs, "phone", user.getPhone());// 电话
			BeanUtils.setProperty(cs, "userMeta", user.getUserMeta());// 用户配置信息
		}
		return cs;
	}
}
